package com.sinosoft.weixin.utils;

import java.io.File;
import java.util.List;

public class ScmFileSystemUtils {

	public static int searchFiles(String targetFileName,File searchBaseDir,List<File> files){
		File[] fs = searchBaseDir.listFiles();
		int count = 0;
		if(fs != null){
			for(int i = 0; i < fs.length; i++){
				File f = fs[i];
				if(f.getName().toLowerCase().equals(".svn")){
					continue;
				}
				if(f.isFile()){
					if(f.getName().equals(targetFileName)){
						files.add(f);
						count++;
					}
				}else if(f.isDirectory()){
					count = count + searchFiles(targetFileName, f, files);
				}
			}
		}
		return count;
	}

	public static boolean isDML(String fileName){
		fileName = fileName == null ? "" : fileName.toLowerCase();

		// SVN 标准
		if(fileName.endsWith("_dml.sql")){
			return true;
		}

		// 原 SCM 标准
		return fileName.startsWith("5-") || fileName.startsWith("6-");
	}

	public static boolean isDDL(String fileName){
		fileName = fileName == null ? "" : fileName.toLowerCase();

		// SVN 标准
		if(fileName.endsWith(".prc") || fileName.endsWith(".fnc")
				|| fileName.endsWith("_ddl.sql")){
			return true;
		}
		if(fileName.startsWith("view_") && fileName.endsWith(".sql")){
			return true;
		}

		// 原 SCM 标准
		return fileName.startsWith("1-") || fileName.startsWith("2-")
				|| fileName.startsWith("3-") || fileName.startsWith("4-");
	}

	/**
	 * 判断文件是否是一个 txt 数据文件，对于大数据的 DML，可以使用这种形式的数据文件进行发布
	 */
	public static boolean isTxtData(String fileName){
		fileName = fileName == null ? "" : fileName.toLowerCase();
		return fileName.startsWith("7-") && fileName.endsWith(".txt");
	}
}
